const labelService = require("../service/label.service")

const verifyLabelExists = async (ctx, next) => {
  // 1. 获取客户端传过来的 labels
  const { labels } = ctx.request.body

  // 2. 判断 labels中的 name是否已经存在于label表中
  const newLabels = []
  for (const name of labels) {
    const res = await labelService.queryLabelByName(name)
    const labelObj = { name }

    // 拿到结果判断存在情况
    // @ts-ignore
    if (res) {
      // 如果存在，就获取当前 name 的 id
      // @ts-ignore
      labelObj.id = res[0].id // => { name: '篮球', id: 1 }
    } else {
      // 不存在就执行插入语句，并获取id
      const insertResult = await labelService.create(name)
      // @ts-ignore
      labelObj.id = insertResult.insertId //=> { name: '爱情', id: 7 }
      console.log(labelObj.id)
      // @ts-ignore
    }
    newLabels.push(labelObj)
  }

  // 3.所有的labels都变成 [{ name: '爱情', id: 7, { name: '友情', id: 8 } }]\
  // 目的是为了传给下一个中间件
  ctx.labels = newLabels
  // console.log(ctx.labels)
  await next()
}

module.exports = {
  verifyLabelExists,
}
